namespace ScrumSprintMonitor.UI.Wpf.ViewModels
{
	#region #using Directives

	using System;
	using System.ComponentModel;
	using System.Windows.Controls;
	using System.Windows.Input;

	using Infrastructure;
	using Infrastructure.Configuration;

	#endregion

	public interface IMonitorViewModel : INotifyPropertyChanged
	{
		string DeploymentVersion { get; }

		Exception Exception { get; }
		string ExceptionMessage { get; }

		MonitorViewType ActiveView { get; }
		bool ShowProgress { get; }
		Orientation SprintTitleOrientation { get; }

		SprintStatus SprintStatus { get; }
		SprintMode SprintMode { get; }

		DateTime LastRefresh { get; }
		DateTime LastUpdate { get; }

		ICommand RefreshCommand { get; }
		ICommand InvokeConfigurationCommand { get; }
	}

	public enum MonitorViewType
	{
		None,
		SprintView,
		ExceptionView,
		FoundUnassignedWorkItems
	}
}